nextjs v16新特性

1. Turbopack 终于正式成为默认 Bundler

以前:

底层:

现在:

默认启用。构建和热更新速度显著提升。

面试一句话:

Next.js 16 makes Turbopack the default stable bundler, replacing Webpack as the primary build system.

 

2. 最大变化:Caching 模型彻底改变

这是我认为最值得学的。


Next.js 15 之前

很多缓存是隐式的:

开发者经常搞不清:

Next.js 16

变成:

显式缓存。

例如:

缓存行为由开发者明确声明。(CodeForGeek)

面试官很可能问:

Why was "use cache" introduced?

答案:

To make caching explicit and predictable instead of relying on implicit framework behavior.

 

3. PPR(Partial Prerendering)基本落地

以前:

三套体系。

现在:

统一了很多思路。

可以做到:

类似:

然后:

逐步流出来。

 

4. middleware.ts 开始退出历史舞台

以前:

现在推荐:

Next 团队认为:

middleware 这个名字让大家误以为是 Express Middleware。

实际上它更像:

所以改名了。

这个面试里属于加分知识点。

 

5. React 19.2 深度集成

Next.js 16 默认搭配 React 19.2。

意味着你可以直接使用:

面试可能问:

Which React version is bundled with Next.js 16?

答案:

React 19.2.

 

6. React Compiler 支持成熟

以前:

写得到处都是。

现在:

能够自动做很多记忆化优化。

所以未来面试很可能出现:

Do we still need useMemo everywhere?

答案:

Less than before. React Compiler can automatically optimize many cases.

 

7. Routing 继续优化

Next.js 16 对导航进行了进一步优化:

减少重复请求。

页面切换更快。


Next.js

 

react 18 新特性

一、 必须掌握的 React 18 全新 Hooks(实战与高频面试题)

React 18 官方新增了 5 个 Hooks。这是开发中最常用、面试最爱考的部分:

1. useDeferredValue(延迟值 Hook)

useDeferredValue 的优势:智能降级,绝不卡顿 它不需要你设置任何延迟时间。React 会把这个值标记为“低优先级”。

useDeferredValue 的魔法:当 React 在后台渲染低优先级的延时列表时,如果用户突然又按了一个键,React 会立即中止(Abort)当前的列表渲染,回过头去优先处理用户的键盘输入。等输入处理完了,再重新开始渲染列表。

useDeferredValue 完美适用场景(纯前端 CPU 密集型)

它的核心舞台是:数据已经在前端(本地内存中),但因为数据量太大,渲染/过滤时会导致页面卡顿。

  1. 大数据量本地搜索/过滤:

    • 比如前端一次性从后端拿到了 5000 条城市数据或员工列表,用户在输入框输入时,需要实时在本地 filter 并渲染大列表。
  2. 复杂图表/仪表盘实时联动:

    • 用户拖动一个滑块(Slider)改变参数,页面上的 ECharts 复杂折线图、热力图需要同步跟着变。渲染图表极其消耗 CPU,用它能保证滑块拖动时丝滑不卡顿。
  3. 富文本编辑器/Markdown 实时预览:

    • 用户在左侧疯狂敲字输入(高优先级),右侧实时解析成 HTML 并渲染复杂的数学公式或代码高亮(低优先级,用 useDeferredValue 延后预览)。
  4. 长列表的标签页(Tab)切换:

    • 从 Tab A 切换到拥有几千个 DOM 节点的 Tab B。可以用它包裹 Tab 的状态,让点击 Tab 按钮时瞬间高亮,而厚重的 Tab B 内容在后台慢慢渲染。

 

useDeferredValue 绝对禁用场景(涉及外部 I/O)

只要操作跨越了 React 内存边界,去和外部世界打交道,就必须用防抖(Debounce)或节流(Throttle):

  1. 网络请求(远程搜索/联想输入框) ➡️ 必须用防抖

    • 每打一个字就要发一次 API 调用的场景。
  2. 频繁写入本地存储(LocalStorage / IndexedDB) ➡️ 必须用防抖/节流

    • 比如实时自动保存用户的草稿,高频写入硬盘会严重挤占浏览器主线程。
  3. 埋点与日志上报 ➡️ 必须用防抖/节流

    • 监听用户滚动(Scroll)或鼠标移动(MouseMove)并发送分析日志,必须节流,否则瞬间发送几百条请求。

赠送:一个防抖做不到的“神级用户体验”

使用 useDeferredValue 做本地过滤时,官方非常推荐一个配合方案:在后台悄悄计算时,让老列表变淡(半透明),提示用户“正在搜索中”

这在防抖里很难做(因为防抖在等待时,组件根本不知道用户在打字),但在 useDeferredValue 里只需要一行判断:

 

 

2. useTransition / startTransition(过渡状态 Hook)

 

3. useId(生成唯一 ID Hook)

 

4. useSyncExternalStore(同步外部存储 Hook)

 

5. useInsertionEffect(插入副作用 Hook)

 

二、 底层机制的大步跨越(必须了解的规范)

6. 自动批处理(Automatic Batching)—— 性能红利

 

7. 并发渲染(Concurrent Rendering)—— 核心发动机

 

8. createRoot 全新应用挂载 API

 

三、 服务端渲染(SSR)的飞跃

如果你做的是 Next.js、Remix 项目或者公司内部的 SSR 架构,这是最震撼的升级:

9. Streaming SSR(流式 HTML 传输)

 

10. Selective Hydration(选择性注水/激活)

 

四、 避坑指南:不可忽视的配套细节变更

在日常开发中,有些更新如果你不知道,可能会排查一整天的 Bug:

11. 严格模式下 useEffect 执行两次(StrictMode)

 

12. 返回值类型的放宽

 

总结

可以这样流畅地把它们分类组织:

  1. 底层底座createRoot 开启了 并发渲染全场景自动批处理 的时代。
  2. 应用武器:针对纯前端的大计算卡顿,我们有了 useDeferredValueuseTransition 两个防卡顿大招;针对服务端渲染和高频组件,有了稳定 ID 的 useId
  3. 架构方向:通过 Streaming SSRSelective Hydration,彻底解决了传统 SSR 页面“只要一个接口慢,全盘白屏”的顽疾。
  4. 开发规范:开发环境下 useEffect 的双击执行 规范了整个社区编写副作用时必须写清理函数的习惯。

 

 

react 19 新特性

新特性很多,但是只需要关注下面这些即可。

如果是面试,React 19 不需要把所有 API 都背下来,但有几个特性已经属于高频题了。

1. Actions(最大的变化)

React 19 最大的目标之一就是简化表单提交和异步状态管理。

以前:

需要自己管理:


React 19:

React 自动管理提交状态。

 

中文

React 19 引入了 Actions,允许开发者直接把异步操作作为 Action 提交,React 会自动管理 pending、error 和更新流程。

English

React 19 introduced Actions, which simplify async mutations by letting React manage pending, error, and update states automatically.

 

2. useActionState

用于处理表单 Action 的状态。

以前:

一堆逻辑。

现在:

统一处理。

 

useActionState combines form submission and state management into a single Hook.

 

3. useFormStatus

获取当前表单提交状态。

例如:


以前:

现在直接从表单上下文获取。

 

useFormStatus allows components inside a form to access the current submission status without passing props.

 

4. useOptimistic

高频面试题。

实现 Optimistic UI。


例如发评论:

以前:

用户感觉慢。


现在:

点击发送:

 

中文

useOptimistic 可以在服务器响应之前先更新 UI,提高用户体验。

English

useOptimistic lets the UI update immediately before the server confirms the change, providing a faster user experience.

 

5. use()

这是 React 19 最有技术含量的 API。


以前:


React 19:

React 可以:

 

中文

use() 可以直接读取 Promise 或 Context,如果 Promise 未完成,React 会自动挂起当前渲染并交给 Suspense 处理。

English

The use() API allows components to read Promises directly. If the Promise is still pending, React suspends rendering and lets Suspense handle the loading state.

 

6. Document Metadata

React 终于支持:

直接写在组件里。

例如:

React 自动处理 Head。

 

7. Resource Loading APIs

React 可以协调:

例如:


作用:

 

8. ref 作为普通 Prop

React 19 之前:


React 19:

直接支持。

 

Is forwardRef still required in React 19?

回答:

In many cases, no. React 19 allows ref to be passed as a normal prop.

 

9. Hydration 错误提示增强

以前:

很难定位。


现在会告诉你:

定位速度快很多。

你提供的这份 React 19 新特性面试核心总结非常准确、含金量极高,结构和对比也非常清晰!

如果是在面试中,能把这 9 点(尤其是你筛选出的 Top 5)清晰地说明白“以前怎么做”和“现在怎么做”,就已经能够击败 90% 的面试者了。

不过,如果以 2026 年当下的面试标准来看,这份总结还差了 4 个极其高频、甚至属于“底层变革”的考点。面试官非常喜欢通过这些来看你对 React 19 的理解是否流于表面。

我为你把这几个缺失的“大底牌”补全在下面:

 

10. Server Components (RSC) 与 Server Actions

这是 React 19 在架构上的最大变革,你提到了 Actions,但如果不提 RSC,这个全家桶就不完整。

 

11. React Compiler (曾经的 React Forget)

这是前端圈期待了数年的核武器级性能优化特性,虽然它作为独立工具链运行,但它是伴随 React 19 正式落地的。

 

12. Context 可以直接当做 Provider 使用

这是一个非常人性化的语法糖简化。

 

13. 清理函数(Cleanup Functions)支持在 Refs 中返回

对 DOM 操作极为友好的一个细节改动。

 

面试最值得掌握的 6 个

  1. React Compiler(谈宏观视野:标志着 React 告别手动性能优化的旧时代)
  2. Server Components & Server Actions(谈架构变革:颠覆了前后端数据交互模型)
  3. use()(谈异步革新:直接在渲染树中消费 Promise,配合 Suspense 彻底干掉 useEffect 拿数据)
  4. useActionState() & useFormStatus()(谈表单生态:React 官方下场统一了异步表单状态管理的乱象)
  5. useOptimistic()(谈用户体验:原生支持乐观更新,以前需要大费周章自己写回滚逻辑)
  6. ref as prop(谈 DX 开发体验:终于去掉了反人类的 forwardRef

 

一句话总结(面试版)

中文

React 19 主要围绕异步数据处理和表单操作进行了增强,引入了 use()、Actions、useActionState、useOptimistic 等 API,让 Suspense、Server Components 和表单交互变得更加简单。

English

React 19 focuses on improving async data handling and form interactions. New features such as use(), Actions, useActionState, and useOptimistic make Suspense, Server Components, and user interactions much easier to implement.